/*
 * @Author: weidewei
 * @Date: 2025-11-17 17:01:33
 * @LastEditors: weidewei
 * @LastEditTime: 2025-11-18 11:35:55
 * @Description:
 * @FilePath: \2025-front-face\js常见手写题\thousand-separator.js
 */

// 1. Number.prototype.toLocaleString

// function thousandSeparator(num) {
//     return num.toLocaleString();
// }

// console.log(thousandSeparator(-1300.56))

/*  
    2.使用正则 ,正则分解：
/\B(?=(\d{3})+(?!\d))/g

\B        // 非单词边界（避免在开头加逗号）
(?=       // 正向肯定查找
  (\d{3})+ // 匹配3的倍数的数字
  (?!\d)   // 后面不能跟数字（避免在小数部分匹配）
)
*/
// function thousandSeparatorReg(number) {
//     // 处理负数和小数
//     const parts = number.toString().split('.');
//     parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ',');
//     console.log(parts)
//     return parts.join('.');
// }
// console.log(thousandSeparatorReg(-12400.123456))

// 3.手动实现

function thousandSeparator(number) {
  const str = Math.floor(number).toString(); // 取出整数部分
  let result = "";
  let count = 0;
  for (let i = str.length - 1; i >= 0; i--) {
    count++;
    result = str[i] + result; 
    // 判断是否为3的倍数，且不是第一位
    if (count % 3 === 0 && i !== 0) {
      result = "," + result;
    }
    console.log(result)
  }
  if(number % 1 !== 0) {
    result += '.' + number.toString().split('.')[1]
  }

  return result;
}

console.log(thousandSeparator(1000.122))

// 1000.256 
// 1. count:1, result: "0", i:3
// 2.count: 2,result: "00", i:2
// 3.count: 3,result: "000",i: 1
// 4.count: 4,result: "1000", i: 0
// 5. count: 5,result: "1000" 退出循环


